import shutil
import os
import re


class Utils:
    # 将一个文件夹下的文件或一个文件放到另一个文件夹中
    @staticmethod
    def copy_files(source, destination):

      # 确保目标文件夹存在，如果不存在就创建它
      if not os.path.exists(destination):
            os.makedirs(destination)
      if os.path.isdir(source):
        # 如果源是文件夹，使用 copytree 复制整个文件夹
        shutil.copytree(source, os.path.join(destination, os.path.basename(source)))
      elif os.path.isfile(source):
            # 如果源是文件，使用 copy 复制文件
            shutil.copy(source, os.path.join(destination, os.path.basename(source)))
      else:
        print("源路径无效，文件或文件夹不存在。")

    # 提取ai_response_s5中的csv代码块，将其保存为.csv文件
    @staticmethod
    def extract_csv_from_response(response_file, csv_file_path):
        with open(response_file, "r", encoding="utf-8") as f:
            content = f.read()
        # 使用正则表达式提取csv代码块
        csv_content = re.findall(r"```csv\n(.*?)```", content, re.DOTALL)
        # 获取文件夹路径
        folder_path = os.path.dirname(csv_file_path)
        # 如果文件夹不存在，创建文件夹
        if not os.path.exists(folder_path):
            os.makedirs(folder_path)
        if csv_content:
            with open(csv_file_path, "w", encoding="utf-8") as f:
                f.write(csv_content[0])